﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using IUAP.DAL.Intranet;
using IUAP.DAL;

/// <summary>
/// Descripción breve de Facultad
/// </summary>
namespace IUAP.BLL.Intranet
{
    public class Facultad : BaseIntranet
    {
        public Facultad()
        {

        }

        public Facultad(int _id_facultad,
            string _nomb_facultad,
            string _dire_usua,
            bool _esta_facultad)
        {
            this.Id_facultad = _id_facultad;
            this.Nomb_facultad = _nomb_facultad;
            this.Dire_usua = _dire_usua;
            this.Esta_facultad = _esta_facultad;
        }

        int id_facultad = 0;

        public int Id_facultad
        {
            get { return id_facultad; }
            set { id_facultad = value; }
        }
        string nomb_facultad = "";

        public string Nomb_facultad
        {
            get { return nomb_facultad; }
            set { nomb_facultad = value; }
        }
        string dire_usua = "";

        public string Dire_usua
        {
            get { return dire_usua; }
            set { dire_usua = value; }
        }
        bool esta_facultad = true;

        public bool Esta_facultad
        {
            get { return esta_facultad; }
            set { esta_facultad = value; }
        }
        public bool update()
        {
            return Facultad.UpdateFacultad(this.Id_facultad,this.Nomb_facultad,this.Dire_usua,this.Esta_facultad);
        }
        public static int InsertFacultad(string nomb_facultad, string dire_usua, bool esta_facultad)
        {
            FacultadDetalles record = new FacultadDetalles(0, nomb_facultad, dire_usua, esta_facultad);
            int ret = SiteProvider.Intranet.InsertFacultad(record);
            BizObject.PurgeCacheItems("Intranet_Facultades");
            return ret;
        }
        public static bool UpdateFacultad(int id_facultad, string nomb_facultad, string dire_usua, bool esta_facultad)
        {
            FacultadDetalles record = new FacultadDetalles(id_facultad,nomb_facultad,dire_usua,esta_facultad);
            bool ret = SiteProvider.Intranet.UpdateFacultad(record);
            BizObject.PurgeCacheItems("intranet_facultad");
            return ret;
        }
        public static List<Facultad> GetFacultades()
        {
            List<Facultad> facultades = null;
            string key = "Intranet_Facultades";

            if (BaseIntranet.Settings.EnableCaching && BizObject.Cache[key] != null)
            {
                facultades = (List<Facultad>)BizObject.Cache[key];
            }
            else
            {
                List<FacultadDetalles> recordset = SiteProvider.Intranet.GetFacultades(false);
                facultades = GetFacultadListFromFacultadDetallesList(recordset);
                BaseIntranet.CacheData(key, facultades);
            }
            return facultades;
        }

        public static Facultad GetFacultadesbyID(int id_facultad)
        {
            Facultad facultad = null;
            string key = "Intranet_Facultad_" + id_facultad.ToString();

            if (BaseIntranet.Settings.EnableCaching && BizObject.Cache[key] != null)
            {
                facultad = (Facultad)BizObject.Cache[key];
            }
            else
            {
                facultad = GetFacultadFromFacultadDetalles(SiteProvider.Intranet.GetFacultadbyID(id_facultad));
                BaseIntranet.CacheData(key, facultad);
            }
            return facultad;
        }

        public static List<Facultad> GetSimFacultades()
        {
            List<Facultad> facultades = null;
            string key = "Intranet_Facultades";
            if (BaseIntranet.Settings.EnableCaching && BizObject.Cache[key] != null)
            {
                facultades = (List<Facultad>)BizObject.Cache[key];
            }
            else
            {
                List<FacultadDetalles> recordset = SiteProvider.Intranet.GetSimFacultades(true);
                facultades = GetFacultadListFromFacultadDetallesList(recordset);
                BaseIntranet.CacheData(key, facultades);
            }
            return facultades;
        }
        private static List<Facultad> GetFacultadListFromFacultadDetallesList(List<FacultadDetalles> recordset)
        {
            List<Facultad> facultades = new List<Facultad>();
            foreach (FacultadDetalles record in recordset)
            {
                facultades.Add(GetFacultadFromFacultadDetalles(record));
            }
            return facultades;
        }
        private static Facultad GetFacultadFromFacultadDetalles(FacultadDetalles record)
        {
            if (record == null)
                return null;
            else
            {
                return new Facultad(record.Id_facultad, record.Nomb_facultad, record.Dire_usua, record.Esta_facultad);
            }
        }
        public static int GetCountFacultad()
        {
            int facultadescount = 0;
            string key = "Intranet_CantidadFacultades";
            if (BaseIntranet.Settings.EnableCaching && BizObject.Cache[key] != null)
            {
                facultadescount = (int)BizObject.Cache[key];
            }
            else
            {
                facultadescount = SiteProvider.Intranet.GetCountFacultad(false);
                BaseIntranet.CacheData(key, facultadescount);
            }
            return facultadescount;
        }
    }
}